package com.guomao.routing;

import com.guomao.util.ConnectionUtil;
import com.rabbitmq.client.*;

import java.io.IOException;  
  
/**
 * 消费者2类
 * 用于从RabbitMQ队列中接收消息并将日志信息存储到数据库
 */
public class  Consumer2 {
  
    /**
     * 程序入口方法
     * @param args 命令行参数
     * @throws Exception 可能抛出的异常
     */
    public static void main(String[] args) throws Exception {
  
        // 获取RabbitMQ连接
        Connection connection = ConnectionUtil.getConnection();
  
        // 创建通道
        Channel channel = connection.createChannel();
  
        // 定义队列名称
        String queue2Name = "test_direct_queue2";
  
        // 声明队列（持久化、非独占、不自动删除、无额外参数）
        channel.queueDeclare(queue2Name,true,false,false,null);
  
        // 创建消费者
        Consumer consumer = new DefaultConsumer(channel){
  
            /**
             * 消息处理方法
             * @param consumerTag 消费者标签
             * @param envelope 信封信息，包含消息属性
             * @param properties 消息属性
             * @param body 消息内容
             * @throws IOException 可能抛出的IO异常
             */
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {  
  
                // 打印消息内容
                System.out.println("body："+new String(body));
                // 模拟将日志信息存储到数据库
                System.out.println("Consumer2 将日志信息存储到数据库.....");
  
            }  
  
        };  
  
        // 开始消费消息（自动确认）
        channel.basicConsume(queue2Name,true,consumer);
  
    }  
  
}